home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Gold Collection
/
Software Vault - The Gold Collection (American Databankers) (1993).ISO
/
cdr28
/
mxmnu239.zip
/
MARXREAD.ME
< prev
next >
Wrap
Text File
|
1993-03-22
|
15KB
|
522 lines
Version 2.37
02-27-92
Digital Research (Novell) has published it's API programmers interface
into it's TaskMax task switcher. And I have added these features to
MarxMenu. MarxMenu can now totally control the TaskMax interface and
replace the TaskMax popup menu with a write your own interface MarxMenu
system.
I want to make the comment that this interface is an example of a
programmers interface done right. It took me only a few hours to
interface into every significant routine that DR offered. The interface
was simple and straight forward and easy to program for and I want to
thank DRI for doing it right.
For those of you out there who might now ask me about a Windows version
the answer is still no. The reason being that Windows is a programmers
nightmare and a support nightmare. I think windows is a mistake and a
mistake that I'm not going to support. Those vendors who have been
pressured into comming out with Windows versions of their product have
had their DOS products freeze in time. It is my position that DOS comes
first and as long as DOS is the #1 operating system sold and continues
to outsell Windows by 10 to 1 I will stay committed do DOS products.
I personally am using MS-DOS 5 on my workstations because my current
copy of DR 6 (and I have the December-91 update) has a number of bigs.
One of these is slow floppy disk problem and since I'm in the software
producing business and produce a lot of floppies it's an issue for me. I
am hoping that Digital Research gets this and other bugs fixed so that I
can switch.
Having gotten that off my chest, here's the new features:
I have written a quite elaborate sample menu TMAX.MNU that demonstrates
the power of these new features. Anyone wanting to do serious work with
this should look at this sample first.
TMaxInstalled : Boolean
This function returns true if TaskMax is installed. Any other TaskMax
command produces a run-time error if used when TaskMax is not installed.
TMaxResult : Number
TMaxResult is a variable containing return information that other TMax
command return or the result status of a TMax command.
TMaxCreateTask (command string)
TMaxCreateTask creates a new task and executes it. You pas it a command
line just like you would use the Execute program. Like the execute
program, if you use the COM or EXE extension then you won't load a
secondary command.com and save yourself 5k of memory and gain some
speed. When the program exits that task is cleared.
Example:
TMaxCreateTask 'DIR *.*'
TMaxSwitchTasks (TaskID)
Switches the current task out and selects the task identified be TaskID.
TMaxDeleteTask (TaskID)
Kills the task identified by TaskID.
TMaxMaxTasks : Number
Returns the total number of tasks allowed by TaskMax.
TMaxActiveTasks : Number
Returns the number of active tasks.
TMaxDirectSwitching (On/Off)
Turns on or off the ability to use the direct switch keys without going
through the task manager menu.
TMaxEMSMemLim (Number)
This is a variable that can be either read or set to the maximum number
of bytes of EMS memory that each task can have. This prevents one task
from hogging up all the EMS. Setting this to 0 disables limiting.
Example:
TMaxEMSMemLim = 2000000 ;2 megs per task
Writeln TMaxEMSLim
TMaxReadTaskInfo (2D Array)
Reads the task information table into a 2 dimensional array where the
first field is the task name and the second field is the TaskId number.
The TaskID number is used by all TMax commands that act on a single task
(TMaxDelete, TMaxSwitchTasks ... ).
Example:
var Tasks
TMaxReadTaskInfo(Tasks)
Loop Tasks
Writeln Tasks[LoopIndex,1] ' ' Tasks[LoopIndex,2]
EndLoop
TMaxSwitchToManager
This command brings up the task manager the same way as if you had
pressed the hot key.
TMaxTakeOver (On/Off)
This allows you MarxMenu program to become the task manager menu. When
the user presses the hot key to pop up the task switching menu it will
pop up your MarxMenu program instead. You can disable this by setting it
to off.
TMaxThisTask : Number
Returns the TaskID of the current task.
TMaxVersion : Number
Returns the version number of TaskMax.
TMaxReturnCount
This variable sets the number of timer ticks (18.2 ticks per second)
that TMaxCreateTask will execute a program before returning to the
original program. If it is set to 0 it will stay in the original
program. By setting TMaxReturnCount to a number other than 0 you can run
a program for a few seconds and come back. This is used to preload tasks
that you might later want to switch to.
Example:
TMaxReturnCount = 27 ;1.5 Seconds
TMaxCreateTask 'DM3.EXE' ;load a file manager
TMaxReturnCount = 0 ;set back to 0 for normal usage
TMaxTaskOpenFiles (TadkID) : Number
Returns the number of open files a task has. You may want to test to see
if a task that open files before deleting the task.
TMaxCut (TaskID)
Activates TaskMax data cutting function.
TMaxPaste (TaskID)
Activates TaskMax data pasting function.
TMaxGetPasteBuffer (Array)
Reads the TaskMax paste buffer into and array of strings.
TMaxSetPasteBuffer (Array)
Sets the TaskMax paste buffer to the strings in array.
Other Features:
PickManyPositions (Array)
After running PickMany and array PickManyPositions is created the has
the position numbers in the original array that were chosen.
===============================================================
Version 2.38
04-08-92
I'm adding features to make data input easier.
InputLength
When using Readln to get input from the keyboard, MarxMenu normally
accepts data from the cursor to the edge of the current window. By
setting InputLength to a value, MarxMenu will limit the size of the data
to a specific length.
Example:
InputLength = 10
Write 'Enter Postal Code: '
ZipCode = Readln
InputLength is reset to 0 after each Readln.
InputBlankChar
InputBlankChar is used with Readln to display the input string area for
entering information into a string. By default it is set to a space
character but can be set to an underline or other characters to make the
field size visable.
Example:
InputBlankChar = '_' ;underline
InputLength = 10
Write 'Enter Postal Code: '
ZipCode = Readln
WordStarKeys (On/Off)
In the early days of MarxMenu I mapped many of the cursor movement keys
to match the WordStar key strokes. Now you can turn this off to get the
real scan codes from the arrow keys.
TrimInputString (On/Off)
TrimInputString if set to on will cause blank characters to be trimmed
from the front and tail of a string read from the keyboard with Readln.
I've also defined some new constant keys if WordStarKeys are on they are
translated to the WordStar equivelents.
Key Scan WordStar
----------------------------------
UpArrow = #0#72 ^E
DownArrow = #0#80 ^X
LeftArrow = #0#75 ^S
RightArrow = #0#77 ^D
HomeKey = #0#71 ^W
EndKey = #0#79 ^Z
CtrlLeftArrow = #0#115 ^A
CtrlRightArrow = #0#116 ^F
PgUpKey = #0#73 ^R
PgDnKey = #0#81 ^C
InsKey = #0#82 ^V
DelKey = #0#83 ^G
04-27-92
For those of you who are using MHS mail, I've got some goodies for you.
MarxMenu can now read MHS messages. This can be used to create a Fax
Server program that responds to MHS messages. Something that I'm working
on for my own use.
MhsDirectory : String
Returns the directory of MHS.
Example:
Writeln MhsDirectory ; '\\TYME\SYS\MHS'
MhsMailDirectory : String
Returns the mail directory of MHS.
Example:
Writeln MhsMailDirectory ; '\\TYME\SYS\MHS\MAIL'
MhsSendDirectory : String
Returns the directory of MHS where messages are placed to be sent.
Example:
Writeln MhsSendDirectory ; '\\TYME\SYS\MHS\MAIL\SND'
MhsUserDirectory : String
Returns the user directory of MHS.
Example:
Writeln MhsMailDirectory ; '\\TYME\SYS\MHS\MAIL\USERS\MARC'
MhsReadFile (FileName,Header,Message)
MhsReadFile reads FilName into two arrays. The Header array contains the
MHS message header. The Message array contains the MHS message.
Example:
var MailFiles Mail Headers X
WholeFileNames
ReadDirectory(MhsUserDirectory + '\MHS\*.',MailFiles)
Loop MailFiles
MhsReadFile(MailFiles[LoopIndex],Mail[LoopIndex],Headers[LoopIndex])
EndLoop
Loop Mail
X = LoopIndex
Loop Headers[X]
Writeln Headers[X,LoopIndex]
EndLoop
Loop Mail[X]
Writeln Mail[X,LoopIndex]
EndLoop
EndLoop
05-11-92
InvertString (String)
InvertString turns a string around so that characters are in reverse
order. This allows for correct string compares and sorts in Hebrew and
Arabic and other languages that are read from right to left.
Example:
var St
St = 'ABCDE'
InvertString(St)
Writeln St ;Returns 'EDCBA'
TMaxNameTask (Task,Name)
Normally TaskMax automatically names tasks according to what program is
running. TMaxNameTask allows you to override the default task name with
a task name of your choosing. The name is limited to 8 characters,
Example:
TMaxNameTask (2,'MYNAME') ;renames task 2
05-18-92
NovAutoDetach (On/Off)
When using MarxMenu to log into a Novell network, MarxMenu will detach
from the file server, if AutoDetach is on, when the screen blanker kicks
in, and reattach when the screen is restored. This keeps the workstation
from tying up a connection number while waiting to log in. Default is
on.
MatrixInvert (2D Array)
MatrixInvert reverses the coordinates of a 2 dimensional array. This is
uesfull when used with ReadAscTextFile to reverse the field and record
layout.
Example:
var Data NameList
ReadAscTextFile('PHONE.LST',Data)
MatrixInvert Data
NameList = Data[1]
SortArrayLinked (2D Array,Array)
SortArrayLinked is used to sort one array based on a key array that is
generated from the original array. The sort of the key array controls
the sort order of both arrays. The number of elements needs to be the
same in both arrays.
Example:
var Data DataTemp NameList
ReadAscTextFile('PHONE.LST',Data)
DataTemp = Data
MatrixInvert DataTemp
NameList = DataTemp[1]
SortArrayLinked(Data,NameList)
In this release I'm attempting to fill in all remaining Bindery calls so
that every bindery API is supported.
NovWritePropValue (Array,Obj,Prop,Type)
NovWritePropValue is used to write values to Item properties only and
not to static properties. Item properties contain data in 128 byte
segments. These segments are passed as an array of strings. If you are
passing binary data then build the binary data into the string array.
Any strings that have less than 128 bytes are padded with zeros.
Example:
AppendArray(Values,'123')
AppendArray(Values,'456')
AppendArray(Values,'789')
NovWritePropValue(Values,'TEST','WASTE',2)
NovDeleteProperty (Obj,Prop,Type)
NovDeleteProperty deletes a property from an object.
Example:
NovDeleteProperty('TEST','WASTE',2)
NovOpenBindery
Opens the Novell bindery for access.
NovCloseBindery
Closes the Novell bindery for access.
05-19-92
InFile : String
When using StandardIO the input and output files by default use the
console. The input can be overridden by setting InFife to point to a
different file or device.
Example:
InFile = 'INPUT.TXT'
StandardIO
OutFile : String
When using StandardIO the input and output files by default use the
console. The output can be overridden by setting InFife to point to a
different file or device.
Example:
OutFile = 'OUPTUT.TXT'
StandardIO
05-19-92
PadLeft (String,Length) : String
PadLeft will return String filled with blanks on the left side so the
the length of the string is Length.
Example:
Writeln PadLeft('123',5) ;returns ' 123'
PadRight (String,Length) : String
PadRight will return String filled with blanks on the right side so the
the length of the string is Length.
Example:
Writeln PadRight('123',5) ;returns '123 '
LowerCase (String) : String
Returns the lower case of the string according to international
character rules.
Example:
Writeln LowerCase('ABCDE') ;returns 'abcde'
WriteError (String)
This command works just like Write except that it writes to the DOS
error device handle. This can be used to put messages on the screen when
the output is redirected to a file.
WritelnError (String)
This command works just like Writeln except that it writes to the DOS
error device handle. This can be used to put messages on the screen when
the output is redirected to a file.
NovGetConnections (Array,Name,Type)
NovGetConnections return an array of connection numbers that a specified
user or other object is attached to. For users use type 1.
Example:
var Connections
NovGetConnections(Connections,'VICKI',1)
Loop Connections
NovSendMessage('The Princess Called!',Connections[LoopIndex])
EndLoop
Break (On/Off)
Turns break checking on and off the same way that it does from batch
files.
NovPasswordRequired (Name) : Boolean
Returns True if Name requires a password. If Name is left off the
current user is assumed.
Example:
if NovPasswordRequired then Writeln 'Password Required!'
if NovPasswordRequired ('BOB') then Writeln 'Password Required!'
06-02-92
Added some new features to the example files. METER.INC has been
modified to include usage logging. I've included CRAWL.INC that displays
crawling text on the bottom of the screen. Read the comment area in
these two files for details on how to use these features.
06-03-92
In spite of documentation, people keep trying to run LOGOUT and LOGOFF
programs from the menu instead of using |LogOff. I have now changed the
compiler to look for these words and compile |Logoff.
06-17-92
I've expanded the syntax of NovCaptureQueue to accept the server name as
part of the queue name. Thus:
NovCaptureQueue(2) = 'TYME/LASER' is valid.
===============================================================
Version 2.39
06-22-92
Did some serious internal cleanup and I'd like to think everything works
better but if there is anything that doesn't work that used to, let me
know and I'll fix it.
I'm in the process of expanding the marxmenu syntax allowing you to do
things that you couldn't do before. You can now return Arrays as results
from procedures.
Example:
var X
X = Test
Procedure Test
var Z
ReadTextFile ('MARX.BAT',Z)
Return Z
EndProc
I've also improved the Novell menu translator so that it works better
with nasty menus.